package com.jctrip.hotel.source.service.elong;

import com.jctrip.hotel.source.model.OrderDataResult;
import com.jctrip.hotel.source.model.PriceCheckParam;
import com.jctrip.hotel.source.model.elong.req.offline.*;
import com.jctrip.hotel.source.model.elong.req.online.*;
import com.jctrip.hotel.source.model.elong.resp.offline.*;
import com.jctrip.hotel.source.model.elong.resp.online.*;
import com.jctrip.hotel.source.model.wehotel.req.OrderData;

/**
 * @Author: zxy
 * @CreateTime: 2023-08-21 17:05
 * @Description:
 */
public interface ElongService {
    String parseHotelId(String innId);

    String parseInnId(String hotelId);

    String[] getPostInfo(String hotelId, String roomTypeCode, String sourceId, String productCode);

    ElongQueryCityResp queryElongCity(String user, String appKey, String secretKey, String local,
                                      ElongQueryCityReq req);

    ElongQueryHotelListResp queryElongHotelList(String user, String appKey, String secretKey, String local,
                                                ElongQueryHotelListReq req);

    ElongQueryHotelResp queryElongHotel(String user, String appKey, String secretKey, String local,
                                        ElongQueryHotelReq req);

    ElongQueryHotelRpResp queryElongHotelRp(String user, String appKey, String secretKey, String local,
                                            ElongQueryHotelRpReq req);

    ElongQueryInventoryResp queryElongInventory(String user, String appKey, String secretKey, String local,
                                                ElongQueryInventoryReq req);

    ELongQueryRateResp queryElongRate(String user, String appKey, String secretKey, String local,
                                      ElongQueryRateReq req);

    ElongValidateResp validateElongOrder(String user, String appKey, String secretKey, String local,
                                         ElongValidateReq req);

    ElongCreateOrderResp createElongOrder(String user, String appKey, String secretKey, String local,
                                          ElongCreateOrderReq req);

    ElongPayOrderResp payElongOrder(String user, String appKey, String secretKey, String local,
                                    ElongPayOrderReq req);

    ElongQueryIncrIdResp queryElongIncrId(String user, String appKey, String secretKey, String local,
                                          String incrType);

    ElongQueryIncrIdResp queryELongShardId(String user, String appKey, String secretKey, String local,
                                               String incrType, Integer shardingKey);

    ElongQueryIncrOrderResp queryElongIncrOrder(String user, String appKey, String secretKey, String local,
                                                ElongQueryIncrOrderReq req);

    ElongQueryShardStateResp queryElongShardState(String user, String appKey, String secretKey, String local,
                                                  ElongQueryShardStateReq req);


    ElongQueryOrderDetailResp queryElongOrderDetail(String user, String appKey, String secretKey, String local,
                                                    ElongQueryOrderDetailReq req);

    ElongCancelorderResp cancelElongOrder(String user, String appKey, String secretKey, String local,
                                          ElongCancelOrderReq req);

    OrderDataResult postOrder(String user, String appKey, String secretKey, String local, ElongCreateOrderReq req, PriceCheckParam priceCheck);

    OrderData queryOrderStatus(String user, String appKey, String secretKey, String local, ElongQueryOrderDetailReq req);

    ElongCancelorderResp cancelOrder(String user, String appKey, String secretKey, String local,
                                          ElongCancelOrderReq req);

    Long getLastId(String user, String appKey, String secretKey, String local, String incrType);

    Long getShardLastId(String user, String appKey, String secretKey, String local, String incrType, Integer shardingKey);

    ElongHotelDetailResp queryElongHotelDetail(String user, String appKey, String secretKey, String local, ElongHotelDetailReq req);
}
